iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0

Ethernaut : Ethernaut
需要準備 Metamask 錢包,和持有測試幣

撰寫文章時使用的是 Rinkeby 測試網,但據以太坊核心開發者表示,Rinkeby、Ropsten、Klin 等測試網未來將在以太坊合併後逐漸棄用,若讀者閱讀文章時幾大測試鏈已遭到棄用,請轉往 Goerli 或 Sepolia 等等測試鏈學習 Ethernaut。

開始遊戲

準備好了之後就點擊第 0 關吧,在實際撰寫合約前,請讀者們跟著以下幾個簡單操作,在第 0 關就習慣 Web Console 的使用方法吧。
首先請開啟網頁檢查工具

開啟 console 後請手動輸入 player

可以看到在 player 變數內所存放的資料就是自己連結的錢包地址

可以再多嘗試幾個命令,例如
contract.address 代表的是目前操作合約的地址。

getBalance 則可以獲取某地址底下的 ETH 餘額,使用方法如下

將地址填入 getBalance 參數中即可取得該地址底下的 ETH 餘額。

通關

依照提示所述,我們必須要先執行 info 函數,那麼就在 console 裡輸入 contract.info() 以執行函數吧

OK,那就繼續按照指示執行 info1 吧,請輸入 contract.info1()

執行 info1 後 Ethernaut希望我們執行 info2 並傳入參數 "hello",請輸入 contract.info2("hello")

接下來要執行的是 infoNum,請輸入 contract.infoNum()

取得的字串是 42 !
(.then(v => v.toString()) 能夠將資料轉成字串)
接著執行 info42,請輸入 contract.info42()

抓到了 !! 要執行的函數名稱就是 theMethodName


只要將密碼輸入 authenticate() 就能通關了,那我們就來找找密碼吧

輸入 await contract.abi 後能夠查看合約底下的函數,發現 password ! 來執行看看吧

終...終於結束了嗎

執行 contract.authenticate() 後把 'ethernaut0' 當作參數輸入,由於這筆交易會改變合約內的資料,所以是需要用 Metamask 簽署的喔,看到 Mined transaction 就表示交易成功上鏈了,來繳交答案吧 ~~

點擊 submit instance 後於 Metamask 上簽署交易

✌(◕‿-)✌ ٩(- ̮̮̃-̃)۶٩(- ̮̮̃-̃)۶٩(- ̮̮̃-̃)۶٩(- ̮̮̃-̃)۶

那麼以上就是今天的入門介紹,請期待明天的關卡~


上一篇
Day 1 參賽動機
下一篇
Day 3 - Fallback
系列文
智能合約漏洞演練 - Ethernaut18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言